Radio Browser Player
Use this plugin to play internet radio in your Q-SYS design. It searches the free Radio Browser directory — a community-maintained catalogue of tens of thousands of stations worldwide — and streams the station you pick straight into your audio system. No subscription, no account, and no extra hardware.
Find stations by name or country, or browse the directory's charts by genre. Save the ones you like as presets and recall them from the plugin, from a Q-SYS UCI, or from a third-party control system. Each instance can run up to four independent zones, so one plugin can feed four different rooms with four different stations.
Compatibility
The plugin requires:
- A Q-SYS Core with internet access. See Prerequisites.
- MP3 stations. The plugin filters the directory to MP3 automatically, because that is the format the Media Stream Receiver decodes. Stations broadcasting only in AAC or Ogg are excluded from every search, chart, and Surprise Me result.
It works with the public Radio Browser service and automatically falls back across the de1, de2, and all mirrors if one is unreachable.
No licence, activation, or account is required. The Radio Browser directory is free and open, and the plugin identifies itself to the service on every request as a well-behaved client.
Note: The Network Interface property offers AUX A and AUX B in addition to LAN A and LAN B, but not every Core model has AUX interfaces. Only select an interface your Core actually provides.
Prerequisites
- Internet access from the Core, including working DNS. The plugin reaches the directory over HTTPS on port 443, and reaches the stations themselves over HTTP or HTTPS on a variety of ports.
- Outbound firewall rules that allow the Core to reach *.api.radio-browser.info and the station stream hosts. Stations are hosted worldwide by thousands of independent broadcasters, so a narrow allow-list is impractical — allow general outbound HTTP/HTTPS from the Core if you can.
Note: Designer emulation has no network access, so the plugin cannot stream or search there. In emulation the status reads Emulation Mode — deploy to Core to test and the network checks are skipped. This is expected — run the design on a real Core to test playback.
Quick Start
This takes about five minutes and ends with audio playing.
- Drag the Radio Browser Player plugin into your design.
- In the Properties pane, set Zone Count to the number of independent rooms you need (leave it at 1 if you are not sure) and Audio Mode to Stereo or Mono. See Properties.
- Wire the plugin's audio output pins — Zone 1 Audio L and Zone 1 Audio R — to a mixer, gain, or output component.
- Press F5 to save the design to the Core and run it.
- Open the plugin and go to the Search page. Type a station name into the Name field, or choose a Country, and press Search.
- Tap a station in the results list. Its details appear on the Radio page.
- Go to the Radio page and press Play. The Stream bar turns green and reads OK, and the level meters start moving.
- Save the station: press Save Mode, then tap an empty preset button. The station is stored and survives a Core restart.
Tip: Volume starts at −20 dB every time the design loads, so a fresh start is always at a safe listening level. Raise it with the fader or the + button once audio is flowing.
Properties
Properties are set in the Designer Properties pane before the design runs. They change how many pages and audio pins the plugin exposes, so set them before you wire anything up.
Zone Count
1 to 4. Each zone is a completely independent player with its own stream, volume, presets selection, and audio pins — one plugin can serve four rooms playing four different stations. Adding a zone adds a Radio page, a Presets page, and a set of audio pins. Default is 1. See Multiple Zones.
Audio Mode
Stereo gives each zone two output pins, Zone n Audio L and Zone n Audio R, and a pair of level meters. Mono sums left and right inside the plugin and gives each zone a single Zone n Audio pin and one meter — the right choice for paging systems and overhead speakers, where a stereo image serves no purpose and you would otherwise waste a channel. Default is Stereo.
Text Scrolling
When enabled, long station names, track titles, and genre lists scroll horizontally so you can read the whole thing in a narrow field. When disabled, the text wraps onto multiple lines instead and stays still. Turn it off if you find movement distracting on a wall panel. Default is enabled.
Network Interface
Which network interface the audio streams use. Auto lets the Core decide, which is correct for most installs. Choose LAN A, LAN B, LAN C, or LAN D to force streaming traffic onto a specific interface — useful when your Core has one interface on the AV network and another with the internet route. Default is Auto.
Note: Only select an interface your Core physically has. LAN C and LAN D exist on some Core models and not others. If you pick one this Core does not have, the plugin checks at startup and reports it in Status. Pick Auto to clear it.
Stream Resync
Master switch for the drift-recovery feature. Internet radio streams slowly fall behind live over long uptime because the receiver's buffer drifts against the station's clock. When Stream Resync is enabled, the Resync pin works and the daily Resync Time schedule runs; when disabled, both are ignored. Default is enabled.
Resync Time
The local time of day, in 24-hour HH:MM format (00:00 to 23:59; 24:00 is also accepted as midnight), at which every zone that is currently playing reconnects to flush the drift buffer. It occurs every day. Leave empty to disable the daily schedule — the Resync pin still works while Stream Resync is enabled.
Debug Print
Controls how much diagnostic detail the plugin prints to the Q-SYS Lua console.
- None — errors only. Use this in production. Default.
- All — adds plain-language breadcrumbs: which station started playing, when a preset was saved, when a search was sent and how many results came back. Stream addresses and request payloads are not printed.
Controls
The plugin has three kinds of page: Radio (play and control), Search (find new stations), and Presets (organise saved stations). With more than one zone you get a Radio and a Presets page per zone, numbered Radio 1, Radio 2, and so on, plus a single shared Search page.
Radio
The main operating page, and the one to put in front of an end user. Everything needed to play, adjust, and switch stations is here.
Status
The bar at the top right shows whether the plugin can reach the Radio Browser directory. Green OK means searching works. This is about the directory, not about playback — a station keeps playing perfectly well even if the directory goes offline, because the stream comes straight from the broadcaster. This same state is published on the Status pin.
Now Playing
Everything known about the current station. On the left is the station's logo, fetched automatically from the directory. On the right is the station name, and below it the current track — song title and artist — when the station broadcasts that information. Many stations do not, in which case the line reads Live stream while audio is flowing. Underneath are the stream bitrate in KBPS, the COUNTRY the station broadcasts from, its genre tags, and the stream address.
Stream
The bar along the bottom of the Now Playing card reports playback health for this zone specifically:
- OK — audio is decoding normally.
- Not Streaming — nothing is playing; press Play.
- Initializing or Switching station… — connecting to the stream. Normal for a few seconds.
- Stream Not Working — the station could not be reached, or stopped responding. Internet radio stations go offline without warning; try another station or a saved preset.
BUF
The network buffer, from 50 ms to 2000 ms, default 100 ms. This is how much audio the Core holds in reserve to ride out network hiccups. Raise it if a station stutters or drops out on a congested or distant link; the cost is a slightly longer delay before audio starts. Lower it only if you need playback to begin faster. The setting applies to every zone.
Volume
A fader from −60 dB to 0 dB with − and + buttons either side. Tap a button to nudge the level by 1 dB; hold it to ramp continuously. The Mute button on the right silences the zone with a short fade rather than an abrupt cut, and its icon shows a red cross when muted.
Note: Volume resets to −20 dB every time the design starts or is recompiled. This is deliberate: after a Core reboot the system always comes back at a known, safe level rather than wherever the fader happened to be left.
Level Meters
Post-fader level, −60 dB to +6 dB. Two meters (L and R) in Stereo mode, one in Mono. Use them to confirm audio is genuinely flowing — a green OK status with dead meters means the station is connected but silent.
Play
Starts and stops the zone.
Changing station while audio is playing crossfades between the old and new stream over about a second and a half. The new station is connected quietly in the background first, so there is no silent gap and no pop. If the new station fails to connect within ten seconds, the plugin falls back to a straightforward switch so the change still happens.
Surprise Me
Picks a random station from the directory and plays it immediately in this zone. Stations at 64 kbps or better are preferred, so you are unlikely to land on something unlistenable. Useful for background music where the exact station does not matter, and genuinely enjoyable to press.
Auto Failover
When enabled, the plugin automatically switches to a saved preset if the current station fails. See Auto Failover.
Presets
Nine preset buttons in a three-by-three grid, with the station name beneath each one and a small green LED that lights when that preset is the station currently playing in this zone. Above the grid are the page arrows and a dropdown listing every saved preset. See Using Presets.
Search
Where you find new stations. This page is shared by all zones. It is mainly a commissioning tool — once presets are saved, operators rarely need it.
Browse
Search by Name, by Country, or by both together. Typing in the Name field or choosing a country searches straight away; the Search button re-runs the search with whatever is currently in the two fields. Partial names work well — searching for jazz finds every station with "jazz" in its name. Results are capped at 50 stations and ordered by popularity, so the best-known stations appear first.
Leaving both fields empty does nothing — set at least a name or a country. To browse without a search term, use Discover below.
Discover
Browse the directory's charts instead of searching by name. Choose a Mode:
- Top Clicked — most listened to. The best starting point.
- Top Voted — highest rated by the Radio Browser community.
- Recently Played — what other listeners have just tuned into.
- Recently Updated — stations whose details changed most recently.
Add a Tag to narrow any mode to a genre, so Top Clicked plus jazz gives you the most popular jazz stations. Refresh re-runs the current selection.
Search Results
The list at the bottom shows whatever the Browse or Discover card returned last. Tap a station to load it. With more than one zone, the Play In dropdown to the right of the list decides which zone receives it.
Tip: Internet radio stations come and go. If a station that worked last month has stopped, search for it again — broadcasters change their stream addresses fairly often, and the directory usually has the new one. Saved presets refresh their addresses automatically each time the design starts.
Presets
A full-height list of every saved preset, plus the tools to rename them and mark them as failover backups. With more than one zone there is one of these pages per zone; the list of presets is the same on all of them, because preset storage is shared.
Preset List
Every saved preset in slot order. Tap one to play it in this zone and select it for editing below.
Friendly Name
Station names from the directory are often cluttered — RADIO NOVA 105.5 FM ★★ THE BEST HITS ★★. Selected shows which preset you are currently editing. Type something shorter — say, Nova — into Name and press Apply, and that name replaces it everywhere: the preset button, the dropdowns, and this list. To restore the station's original name, clear Name and press Apply again.
Use as Backup
Marks the selected preset as a failover backup. See Auto Failover.
Using Presets
There are 36 preset slots, shown nine at a time across four pages. Use the ‹ and › arrows to change page; the page counter between them shows how many pages currently hold presets, growing as you fill slots.
Preset storage is shared by every zone — save a station in Zone 1 and it appears in Zone 2's list as well. What each zone plays is independent, so two zones can play two different presets at once.
Saving a preset
- Play or select the station you want to save.
- Press Save Mode. It stays lit, waiting for your next tap.
- Tap the preset button you want to save into. Saving over an occupied slot replaces it.
Save Mode switches itself off after one save, so you cannot overwrite a preset by accident on your next tap.
Recalling a preset
Tap the preset button, or pick it from the dropdown on the Radio page, or tap it in the list on the Presets page. The green LED on the button lights when that preset is the station currently playing in this zone.
Deleting a preset
Press Delete Mode, then tap the preset to clear it. Like Save Mode, it switches itself off after one use. Deleting a preset does not interrupt playback, even if that preset is what is currently playing.
Auto Failover
Internet radio stations fail. They go offline, their addresses change, and sometimes they keep the connection open while broadcasting nothing at all. In a commercial installation — a shop, a gym, a restaurant — silence is the failure everyone notices. Auto Failover exists so that a dead station does not become a silent room.
Switch on Auto Failover on the Radio page and the plugin watches the zone for two kinds of failure:
- Stream down — the stream has been unavailable for 15 seconds, whether it faulted outright or never finished connecting.
- Dead air — the stream claims to be fine but has been effectively silent for 30 seconds.
On either, the plugin moves to the next saved preset and keeps trying down the list until one plays. Each preset is tried once. If none work — usually because the internet connection itself is down — it waits two minutes and sweeps the list again, so the system recovers on its own once the network comes back.
Dead-air detection measures the audio level before the volume fader and mute, so turning a zone down or muting it never triggers a false failover. The silence threshold is deliberately conservative, so the quiet passages in classical music will not trip it.
Choosing which presets are used
By default the plugin walks through every saved preset. To control the order and choice, mark specific presets as backups: select a preset on the Presets page and switch on Use as Backup. As soon as at least one preset is marked, failover uses only the marked ones. This is how you make sure a music-led venue falls back to another music station rather than to a talk station.
Note: Auto Failover needs saved presets to switch to. With no presets saved it has nowhere to go. Save at least two or three reliable stations before you rely on it.
Multiple Zones
Set Zone Count to 2, 3, or 4 and the plugin becomes that many independent radio players in one component. Each zone gets its own Radio page, its own Presets page, its own audio pins, and its own volume, mute, and playback state.
What is shared: the 36 preset slots, the Search page, the network buffer, and the directory status. What is independent: which station each zone plays, its volume and mute, and its Auto Failover setting.
On the Search page, the Play In dropdown appears next to the results list and decides which zone receives the station you tap. It defaults to Zone 1. Preset buttons and dropdowns are already per-zone, so they always act on the zone whose page you are looking at.
Tip: Zones stream independently, so four zones playing four stations use roughly four times the bandwidth of one. Four zones all playing the same station still open four separate streams — if every room wants the same audio, use one zone and distribute it inside Q-SYS instead.
Files on the Core
Everything the plugin saves lives in one shared folder, visible in Core Manager:
Files > Coreforge Labs - Files > Radio Browser
|
File |
Purpose |
|---|---|
|
Presets.json |
All 36 preset slots — station details, friendly names, and Use as Backup flags. One file, shared by every zone. |
|
CurrentStation_Zn.json |
The station zone n was playing, written every time that zone changes station. Read back at startup so the zone resumes automatically after a Core reboot or design recompile. One file per zone. |
Every time the design starts, the plugin re-checks each saved preset against the Radio Browser directory and quietly updates any stream address that has changed. This is what keeps presets working over months of use, and it happens with no action from you.
Tip: To copy presets to another Core, download Presets.json from Core Manager and upload it to the same folder on the other Core. To start presets over, delete Presets.json and let the plugin recreate it empty on the next start.
Control Pins
These pins appear on the plugin component in the design canvas, so you can wire them to other components, scripts, or a control system. Per-zone pins repeat for each zone when Zone Count is more than 1. Every other control remains available to UCIs and external control, even though it is not shown as a pin.
|
Pin Name |
Value |
String |
Purpose |
Pins Available |
|---|---|---|---|---|
|
System |
||||
|
Status |
0 - 5 |
(text) |
Directory reachable |
Output |
|
Playback (per zone) |
||||
|
Play |
0 1 |
false true |
Start / stop the zone |
Input / Output |
|
PlayOn |
1 |
true |
Pulse to start playing |
Input |
|
PlayOff |
1 |
true |
Pulse to stop playing |
Input |
|
Resync |
1 |
true |
Pulse to reconnect the current stream |
Input |
|
Volume |
-60 - 0 |
(dB) |
Zone level |
Input / Output |
|
Mute |
0 1 |
false true |
Mute the zone |
Input / Output |
|
Station (per zone) |
||||
|
StationSearch |
- |
(preset name) |
Recall a preset by name |
Input |
|
StationURL |
- |
(stream address) |
Current stream, or push your own |
Input / Output |
|
NowPlaying |
- |
(track title) |
Song and artist, when broadcast |
Output |
|
AlbumArtURL |
- |
(image address) |
Station logo, for third-party panels |
Output |
|
Audio (per zone) |
||||
|
Zone n Audio L / R |
- |
- |
Stereo audio out |
Output |
|
Zone n Audio |
- |
- |
Summed mono audio out |
Output |